from django.shortcuts import render
from django.http import HttpResponse

from .. models import Users
# Create your views here.
def index(request):
	

	return render(request,'admin/index.html')

# 登录
def adminlogin(request):

	# 判断请求方式如果为GET 返回一个登录页面
	if request.method == 'GET':

		return render(request,'admin/login.html')

	elif request.method == 'POST':
		# 执行登录

		# 获取提交的数据
		data = request.POST.dict()
		del data['csrfmiddlewaretoken']

		# 判断验证码是否正确
		if data['vcode'].upper() != request.session['verifycode'].upper():
			return HttpResponse('<script>alert("验证码错误");history.back(-1);</script>')


		# 判断用户名
		try:
			# 获取用户
			ob = Users.objects.get(username=data['username'])

			# 判断密码
			from django.contrib.auth.hashers import check_password
			# 检测密码
			res = check_password(data['password'],ob.password)
			if res:
				# 执行登录
				request.session['AdminUser'] = {'uid':ob.id,'uname':ob.username,'pic':ob.pic}
				return HttpResponse('<script>alert("欢迎登陆");location.href="/myadmin/"</script>')

		except:
			pass

		return HttpResponse('<script>alert("用户名或密码错误");history.back(-1);</script>')



# 退出登录
def adminlogout(request):
	request.session['AdminUser'] = ''


	return HttpResponse('<script>alert("退出成功,欢迎下次登陆");location.href="/myadmin/login/"</script>')



# 验证码
def verifycode(request):
	#引入绘图模块
	from PIL import Image, ImageDraw, ImageFont
	#引入随机函数模块
	import random
	#定义变量，用于画面的背景色、宽、高
	bgcolor = (random.randrange(20, 100), random.randrange(
	    20, 100), 255)
	width = 100
	height = 25
	#创建画面对象
	im = Image.new('RGB', (width, height), bgcolor)
	#创建画笔对象
	draw = ImageDraw.Draw(im)
	#调用画笔的point()函数绘制噪点
	for i in range(0, 100):
		xy = (random.randrange(0, width), random.randrange(0, height))
		fill = (random.randrange(0, 255), 255, random.randrange(0, 255))
		draw.point(xy, fill=fill)
	#定义验证码的备选值
	# str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0'
	str1 = '123456789'
	#随机选取4个值作为验证码
	rand_str = ''
	for i in range(0, 4):
		rand_str += str1[random.randrange(0, len(str1))]
	#构造字体对象
	font = ImageFont.truetype('FreeMono.ttf', 23)
	#构造字体颜色
	fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255))
	#绘制4个字
	draw.text((5, 2), rand_str[0], font=font, fill=fontcolor)
	draw.text((25, 2), rand_str[1], font=font, fill=fontcolor)
	draw.text((50, 2), rand_str[2], font=font, fill=fontcolor)
	draw.text((75, 2), rand_str[3], font=font, fill=fontcolor)
	#释放画笔
	del draw
	#存入session，用于做进一步验证
	request.session['verifycode'] = rand_str
	#内存文件操作
	import io
	buf = io.BytesIO()
	#将图片保存在内存中，文件类型为png
	im.save(buf, 'png')
	#将内存中的图片数据返回给客户端，MIME类型为图片png
	return HttpResponse(buf.getvalue(), 'image/png')